package hbase.HbaseStudy;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.*;

import java.io.IOException;

public class Hb01_createTable {
    /*
    * 1.获取hbase连接对象
    * 2.根据连接对象获取相关管理对象
    *       admin:对表操作
    *       Table:对表数据操作
    * 3.执行相关操作
    * 4.处理结果集（只有查询才存在）
    * 5.释放资源
    * */


//  未指定命名空间默认将表存放在 default 命名空间下
    public static void main(String[] args) throws IOException {
//        todo 1.获取hbase连接对象
//        Configuration conf = new Configuration(); 方法一： 自己创建conf对象
        Configuration conf = HBaseConfiguration.create(); // 方法二：自动创建conf对象
//        conf.set("hbase.zookeeper.quorum","master,slave1,slave2,slave3");
        Connection HConn = ConnectionFactory.createConnection(conf);
//        todo 2.根据连接对象获取相关管理对象
        Admin admin = HConn.getAdmin();
//        todo 3.执行相关操作
//        创建表限检测表是否存在
        boolean flag = admin.tableExists(TableName.valueOf("food"));
        // 存在返回true，否则返回false
        if(!flag){
            // 创建表的构建其对象，并指定表面
            TableDescriptorBuilder new_build = TableDescriptorBuilder.newBuilder(TableName.valueOf("food"));
            // 创建表的构建其对象，并指定列竹名
            new_build.setColumnFamily(ColumnFamilyDescriptorBuilder.of("info"));
            // 通过表对象来创建表描述伏
            TableDescriptor desc = new_build.build();
            // 创建表
            admin.createTable(desc);
        }
//        5.释放资源
        admin.close();
        HConn.close();
        System.out.println("ok");
    }
}
